<?php

/**
 * This is the model class for table "{{lesson}}".
 *
 * The followings are the available columns in table '{{lesson}}':
 * @property string $lesson_id
 * @property string $name
 * @property integer $state
 * @property integer $created_at
 * @property string $user_id
 * @property string $hits
 *
 * The followings are the available model relations:
 * @property Article[] $articles
 * @property User $user
 */
class Lesson extends CActiveRecord
{
  /**
   * @return string the associated database table name
   */
  public function tableName()
  {
    return '{{lesson}}';
  }

  public function defaultScope()
  {
    return array(
      'alias'=>'lesson'
    );
  }

  /**
   * @return array validation rules for model attributes.
   */
  public function rules()
  {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('name, created_at, user_id', 'required'),
        array('state, created_at', 'numerical', 'integerOnly' => true),
        array('name', 'length', 'max' => 20),
        array('user_id', 'length', 'max' => 10),
        array('hits', 'length', 'max' => 11),
      // The following rule is used by search().
      // @todo Please remove those attributes that should not be searched.
        array('lesson_id, name, state, created_at, user_id, hits', 'safe', 'on' => 'search'),
    );
  }

  /**
   * @return array relational rules.
   */
  public function relations()
  {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'articles' => array(self::HAS_MANY, 'Article', 'lesson_id'),
        'user' => array(self::BELONGS_TO, 'User', 'user_id'),
    );
  }

  /**
   * @return array customized attribute labels (name=>label)
   */
  public function attributeLabels()
  {
    return array(
        'lesson_id' => 'Lesson',
        'name' => '课程名称',
        'state' => '课程状态',
        'created_at' => 'Created At',
        'user_id' => 'User',
        'hits' => 'Hits',
    );
  }


  /**
   * Retrieves a list of models based on the current search/filter conditions.
   *
   * Typical usecase:
   * - Initialize the model fields with values from filter form.
   * - Execute this method to get CActiveDataProvider instance which will filter
   * models according to data in model fields.
   * - Pass data provider to CGridView, CListView or any similar widget.
   *
   * @return CActiveDataProvider the data provider that can return the models
   * based on the search/filter conditions.
   */
  public function search()
  {
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria = new CDbCriteria;

    $criteria->compare('lesson_id', $this->lesson_id, true);
    $criteria->compare('name', $this->name, true);
    $criteria->compare('state', $this->state);
    $criteria->compare('created_at', $this->created_at);
    $criteria->compare('user_id', $this->user_id, true);
    $criteria->compare('hits', $this->hits, true);

    return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
    ));
  }

  /**
   * Returns the static model of the specified AR class.
   * Please note that you should have this exact method in all your CActiveRecord descendants!
   * @param string $className active record class name.
   * @return Lesson the static model class
   */
  public static function model($className = __CLASS__)
  {
    return parent::model($className);
  }

  public function onBeforeValidate($event)
  {
    if ($this->isNewRecord) {
      $this->created_at = time();
      $this->user_id = Yii::app()->user->id;
    }
    parent::onBeforeValidate($event); // TODO: Change the autogenerated stub
  }
}
